#ifndef _XX_YY_BMOCK_MEMORY_MANAGMENT
#define _XX_YY_BMOCK_MEMORY_MANAGMENT
#include <boost/type_traits.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/mpl/or.hpp>
#include <boost/static_assert.hpp>
#include "detail/bmock_any.hpp"
#include <boost/shared_ptr.hpp>
#include "bmock_out_arg_val.hpp"
#include "bmock_raw_mem.hpp"
#include <sstream>

namespace bmock {

	void _insert_to_vector(boost::any a);
	template<typename T> T* _get_buffer(int size_)
	{
		T* ptr;
		ptr= new T[size_];
		boost::shared_ptr<T>X(ptr);
		boost::any a(X);
		_insert_to_vector(a);
		return ptr;
	}

	template<typename T>
	inline void get_buffer(T*& ptr,int size_) {
			ptr= _get_buffer<T>(size_);
	}

	inline void get_buffer(void*& ptr,int size_) {
			ptr=(void*) _get_buffer<unsigned char>(size_);
	}
		
}

#endif